﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;

namespace Sinacor.UI.Bovespa.Monitoracao.Model
{
    public class ReceptorMonitorEntity
    {
        public ReceptorMonitorEntity()
        {
            ErrorData = new ErrorData();
        }
        public bool GoodStateConnected { get; set; }
        public bool Connected { get; set; }
        public long ErrorEventsQuantity { get; set; }//Número de eventos de erro disparado pelo STM
        public long SuccessfulConnectionsQuantity { get; set; }//Número de tentativas de conexão com o STM bem sucedidas
        public long UnsuccessfulConnectionsQuantity { get; set; }//Número de tentativas de conexão com o STM mau sucedidas
        public String AverageTimeToSendAck { get; set; }//Tempo médio entre receber a mensagem e o envio do ACK para o STM
        public TimeSpan AverageTimeToSendAckTimeSpan { get; set; }//Tempo médio entre receber a mensagem e o envio do ACK para o STM
        public TimeSpan LimitAverageTimeToSendAck { get; set; }//Tempo médio entre receber a mensagem e o envio do ACK para o STM

        public long ReceivedMessagesForSecond { get; set; }// Mensagens Recebidas por Segundo
        public long lReceivedMessagesQuantity { get; set; }//Total de Mensagens Recebida
        public String LastReceivedMessageTimeStamp { get; set; }//Data e hora da última mensagem recebida
        public string LastReceivedMessageId { get; set; }// ID da última mensagem recebida
        public string LastReceivedMessageTimeStampWithId { get { return LastReceivedMessageTimeStamp + " " + LastReceivedMessageId; } }
        public long InternalQueuedMessages_01_Quantity { get; set; }// Mensagens represadas na fila interna
        public long TotalInternalQueuedMessages { get; set; }// Limite de mensagens na fila


        public long ReceiverQueueConnectionsReTries { get; set; }//Número de Tentativas Reconexão com MSMQ (Fila router)
        public long DumpQueueConnectionsReTries { get; set; }//Número de Tentativas Reconexão com MSMQ (Fila dump)
        public bool ReceiverStoppedByQueueLimitReached { get; set; }//Receptor parado ao exceder limite de alguma fila MSMQ
        public bool GoodStateReceiverStoppedByQueueLimitReached{ get; set; }


        ///ProcessData Information Begin
        //Limite
        public long LimitPrivateMemory { get; set; }//Private Memory
        public int LimitHandleCount { get; set; }//Handle Count
        public int LimitThreadCount { get; set; }//Thread Count

        //Informacao
        public long PrivateMemoryBytes { get; set; }//Private Memory
        public string PrivateMemory { get; set; }//Private Memory
        public int HandleCount { get; set; }//Handle Count
        public int ThreadCount { get; set; }//Thread Count

        public DateTime InitializedDate { get; set; }
        public TimeSpan UpTime { get; set; }
        public TimeSpan PrivilegedProcessorTime { get; set; }
        public string MachineIPAddress { get; set; }
        public string MachineName { get; set; }

        public ErrorData ErrorData { get; set; }

        public string AverageTimeToCallAck
        {
            get;
            set;
        }


    }
}
